Version 1/060430 of the Standard Rules by Graham Nelson begins here.

"The Standard Rules, included in every project, define the basic framework
of kinds, actions and phrases which make Inform what it is."

Document ACTIONS at doc82.
Document ACTIVITIES at doc243.
Document ARSUMMARY at doc161.
Document EXTACTIVITIES at doc247.
Document HEADINGS at doc15.
Document KINDS at doc32.
Document KINDSVALUE at doc65.
Document LCARDS at doc287.
Document NEWRULEBOOKS at doc274.
Document PHRASES at doc142.
Document ROOMPLAYBEGINS at doc117.
Document SCENESINTRO at doc133.
Document act_all at doc267.
Document act_amuse at doc270.
Document act_banner at doc268.
Document act_con at doc250.
Document act_csl at doc260.
Document act_darkdesc at doc259.
Document act_darkname at doc258.
Document act_details at doc255.
Document act_ds at doc263.
Document act_gt at doc254.
Document act_lc at doc253.
Document act_lni at doc262.
Document act_nowdark at doc257.
Document act_obit at doc269.
Document act_parsererror at doc266.
Document act_pn at doc251.
Document act_ppn at doc252.
Document act_reading at doc265.
Document act_smn at doc264.
Document act_toodark at doc256.
Document act_wpa at doc261.
Document kind_backdrop at doc36.
Document kind_device at doc41.
Document kind_door at doc39.
Document kind_person at doc43.
Document kind_player's at doc47.
Document kind_time at doc123.
Document kind_vehicle at doc42.
Document ph_allow at doc173.
Document ph_blankout at doc216.
Document ph_boxed at doc120.
Document ph_carryout at doc247.
Document ph_change at doc100.
Document ph_changep at doc103.
Document ph_changev at doc104.
Document ph_chooserow at doc211.
Document ph_consents at doc145.
Document ph_consider at doc278.
Document ph_end at doc121.
Document ph_follow at doc274.
Document ph_future at doc128.
Document ph_group at doc253.
Document ph_happening at doc136.
Document ph_holder at doc114.
Document ph_if at doc146.
Document ph_ignore at doc276.
Document ph_list at doc152.
Document ph_minspart at doc127.
Document ph_move at doc106.
Document ph_nearest at doc125.
Document ph_numblank at doc216.
Document ph_numrows at doc208.
Document ph_omit at doc251.
Document ph_otherwise at doc149.
Document ph_plus at doc193.
Document ph_random at doc115.
Document ph_remove at doc108.
Document ph_repeat at doc150.
Document ph_result at doc154.
Document ph_runthrough at doc151.
Document ph_say at doc81.
Document ph_sayif at doc62.
Document ph_scope at doc263.
Document ph_sort at doc217.
Document ph_stop at doc84.
Document ph_succeeds at doc277.
Document ph_surrounds at doc102.
Document ph_tabrepeat at doc212.
Document ph_thereis at doc213.
Document ph_timeshift at doc126.
Document ph_try at doc85.
Document ph_tsince at doc135.
Document ph_types at doc64.
Document ph_while at doc147.
Document ph_yes at doc154.
Document rules_after at doc86.
Document rules_before at doc84.
Document rules_et at doc122.
Document rules_instead at doc83.
Document rules_ri at doc173.
Document rules_wpb at doc117.
Document rules_wpe at doc121.
Document var_command at doc265.
Document var_location at doc68.
Document var_noun at doc91.
Document var_particular at doc250.
Document var_person_asked at doc162.
Document var_person_reaching at doc174.
Document var_prompt at doc101.
Document var_reason at doc164.
Document var_score at doc118.
Document var_sl at doc102.
Document var_time at doc123.
Document var_understood at doc233.
Document visibility at doc175.

Use MAX_ARRAYS of 1500.
Use MAX_CLASSES of 200.
Use MAX_VERBS of 300.
Use MAX_LABELS of 10000.
Use MAX_ZCODE_SIZE of 50000.
Use MAX_STATIC_DATA of 30000.
Use MAX_PROP_TABLE_SIZE of 30000.
Use MAX_INDIV_PROP_TABLE_SIZE of 20000.


Part SR1 - Kinds


Section SR1/1 - Primitive Kinds

[The kind "kind" is not created here but by NI itself. The first through
to tenth kinds created now follow: they must not be reordered or moved.]

A room is a kind.
A thing is a kind.
A direction is a kind.
A door is a kind of thing.
A container is a kind of thing.
A supporter is a kind of thing.
A backdrop is a kind of thing.
The plural of person is people.
The plural of person is persons.
A person is a kind of thing.
A region is a kind.


Section SR1/2 - Rooms

The specification of room is "Represents geographical locations, both indoor
and outdoor, which are not necessarily areas in a building. A player in one
room is mostly unable to sense, or interact with, anything in a different room.
Rooms are arranged in a map."

A room can be lighted or dark. A room is usually lighted.
A room can be visited or unvisited. A room is usually unvisited.
A room has a miscellaneous-value called map region. A room has a miscellaneous-value called
description. A room has a miscellaneous-value called printed name.

Include (-
  with n_to 0, ne_to 0, e_to 0, se_to 0, s_to 0, sw_to 0, w_to 0, nw_to 0,
  u_to 0, d_to 0, in_to 0, out_to 0,
-) when defining a room.

Definition: A room is adjacent if it is adjacent to the location.

Section SR1/3 - Things

The specification of thing is "Represents anything interactive in the model
world that is not a room. People, pieces of scenery, furniture, doors and
mislaid umbrellas might all be examples, and so might more surprising things
like the sound of birdsong or a shaft of sunlight."

A thing has a miscellaneous-value called a description. A thing has a miscellaneous-value called
an initial appearance. A thing has a miscellaneous-value called printed name. A thing
has a miscellaneous-value called a printed plural name. A thing has a miscellaneous-value called
an inventory listing. A thing has a miscellaneous-value called an indefinite article.

A thing can be enterable.

A thing can be lit or unlit. A thing is usually unlit.

A thing can be edible or inedible. A thing is usually inedible.

A thing can be opaque or transparent. A thing is usually opaque.

A thing can be described or undescribed. A thing is usually described.
A thing can be scenery. A thing is usually not scenery.

A thing can be fixed in place or portable. A thing is usually portable.

A thing can be wearable. A thing is usually not wearable.

A thing can be handled.

A thing can be pushable between rooms.

Include (-
  with before [;
      PushDir: AllowPushDir(); rtrue;
  ],
  with add_to_scope I7_ScopeParts,
  with component_parent nothing, component_sibling nothing, component_child nothing,
-) when defining a thing.

A thing can be an Inform library door. A thing can be an Inform library
container. A thing can be an Inform library supporter. A thing can be
Inform library switchable. A thing can be an Inform library animate object.
A thing can be an Inform library male.

A thing can be marked for listing or unmarked for listing. A thing is usually
unmarked for listing.

A thing can be mentioned or unmentioned.

The verb to be able to see (he is seen) implies the visibility relation.

The verb to be able to touch (he is touched) implies the touchability relation.

The verb to conceal (he conceals, they conceal, he concealed, it is concealed,
he is concealing) implies the concealment relation.

The verb to enclose (he encloses, they enclose, he enclosed, it is enclosed,
he is enclosing) implies the enclosure relation.

Definition: Something is visible if the player can see it.

Definition: Something is touchable if the player can touch it.

Definition: Something is invisible if the player cannot see it.

Definition: Something is untouchable if the player cannot touch it.

Definition: Something is concealed if the holder of it conceals it.

Definition: Something is unconcealed if the holder of it does not conceal it.

Section SR1/4 - Doors

The specification of door is "Represents a conduit joining two rooms, most
often a door or gate but sometimes a plank bridge, a slide or a hatchway.
Usually visible and operable from both sides (for instance if you write
'The blue door is east of the Ballroom and west of the Garden.'), but
sometimes only one-way (for instance if you write 'East of the Ballroom is
the long slide. Through the long slide is the cellar.')."

A door is always an Inform library door.
A door can be open or closed.
A door is usually closed. A door can be openable or unopenable.
A door is usually openable.
A door can be lockable. A door is usually not lockable.
A door can be locked or unlocked. A door is usually unlocked.
A door has a miscellaneous-value called a matching key.
A door is usually fixed in place.
A door is never pushable between rooms.
A door has a miscellaneous-value called an other side.
Through X is Y means that the other side of X is Y.
X is through Y means that the other side of X is Y.


Section SR1/5 - Containers and supporters

The specification of container is "Represents something into which portable
things can be put, such as a teachest or a handbag. Something with a really
large immobile interior, such as the Albert Hall, had better be a room
instead."

A container is always an Inform library container.
A container can be open or closed. A container is usually open.
A container can be openable or unopenable. A container is usually unopenable.
A container can be lockable. A container is usually not lockable.
A container can be locked or unlocked. A container is usually
unlocked. A container has a miscellaneous-value called a matching key. 
A container has a number called carrying capacity.

X unlocks Y means that the matching key of Y is X.
X fits the lock of Y means that the matching key of Y is X.

A player's holdall is a kind of container. The specification of
player's holdall is "Represents a container which the player can
carry around as a sort of rucksack, into which spare items are
automatically stowed away."

A player's holdall is always portable. A player's holdall
is usually openable.

Include (-
Global SACK_OBJECT;
Constant RUCKSACK_CLASS = K10_player_s_holdall;
-) before the library.

The specification of supporter is "Represents a surface on which things can be
placed, such as a table."

A supporter is always an Inform library supporter.
A supporter is always transparent.
A supporter is usually fixed in place.
A supporter has a number called carrying capacity.


Section SR1/6 - Devices

A device is a kind of thing. A device is always Inform library switchable.
A device can be switched on or switched off. A device is usually switched off.

The specification of device is "Represents a machine or contrivance of some
kind which can be switched on or off."


Section SR1/7 - Directions

The specification of direction is "Represents a direction of movement, such
as northeast or down. At present Inform 7 does not support the creation
of new directions, but it will do in the final release."

A direction has a miscellaneous-value called an opposite. A direction has a miscellaneous-value
called an Inform property. A direction has a miscellaneous-value called an Inform object.

The north is a direction with opposite south, Inform property "n_to" and Inform object "n_obj".
The northeast is a direction with opposite southwest, Inform property "ne_to" and Inform object "ne_obj".
The northwest is a direction with opposite southeast, Inform property "nw_to" and Inform object "nw_obj".
The south is a direction with opposite north, Inform property "s_to" and Inform object "s_obj".
The southeast is a direction with opposite northwest, Inform property "se_to" and Inform object "se_obj".
The southwest is a direction with opposite northeast, Inform property "sw_to" and Inform object "sw_obj".
The east is a direction with opposite west, Inform property "e_to" and Inform object "e_obj".
The west is a direction with opposite east, Inform property "w_to" and Inform object "w_obj".
The up is a direction with opposite down, Inform property "u_to" and Inform object "u_obj".
The down is a direction with opposite up, Inform property "d_to" and Inform object "d_obj".
The inside is a direction with opposite outside, Inform property "in_to" and Inform object "in_obj".
The outside is a direction with opposite inside, Inform property "out_to" and Inform object "out_obj".

Include (- class CompassDirection, -) when defining a direction.
Include (- with name 'n//' 'north' 'wall', door_dir n_to, -) when defining the north.
Include (- with name 'ne' 'northeast' 'wall', door_dir ne_to, -) when defining the northeast.
Include (- with name 'nw' 'northwest' 'wall', door_dir nw_to, -) when defining the northwest.
Include (- with name 's//' 'south' 'wall', door_dir s_to, -) when defining the south.
Include (- with name 'se' 'southeast' 'wall', door_dir se_to, -) when defining the southeast.
Include (- with name 'sw' 'southwest' 'wall', door_dir sw_to, -) when defining the southwest.
Include (- with name 'e//' 'east' 'wall', door_dir e_to, -) when defining the east.
Include (- with name 'w//' 'west' 'wall', door_dir w_to, -) when defining the west.
Include (- with name 'u//' 'up', door_dir u_to, -) when defining up.
Include (- with name 'd//' 'down', door_dir d_to, -) when defining down.
Include (- with name 'in//' 'inside', door_dir in_to, -) when defining inside.
Include (- with name 'out//' 'outside', door_dir out_to, -) when defining outside.

Above means up from.
Above is means up is.
Below means down from.
Below is means down is.


Section SR1/8 - People, men and women

A person is always an Inform library animate object.
A person can be female or male. A person is usually male.
Include (-
  with carrying capacity 100,
-) when defining a person.
A person has a number called carrying capacity.
The carrying capacity of a person is usually 100.

The specification of person is "Despite the name, not necessarily
a human being, but anything animate enough to envisage having a
conversation with, or bartering with."

An animal is a kind of person.
The specification of animal is "Represents an animal, or at any
rate a non-human living creature reasonably large and possible
to interact with: a giant Venus fly-trap might qualify, but not
a patch of lichen."

The plural of man is men. The plural of woman is women.

A man is a kind of person.
The specification of man is "Represents a man, boy or sometimes
an animal which can be referred to as 'him'."
A man is always Inform library male. A man is always male.

A woman is a kind of person. A woman is always female.

The specification of woman is "Represents a woman, girl or sometimes
an animal which can be referred to as 'her'."

A person can be neuter. A person is usually not neuter. A woman is
never neuter. A man is never neuter. Neuter translates into Inform as
"neuter".


Section SR1/8a - Player-characters - unindexed


A player-character is a kind of person.

The specification of player-character is "Represents a body through
which the game can be played. In most games there is only one of these,
normally called 'yourself'."

Include (-
  with description
       [;  return L__M(##Miscellany, 19);
       ],
       before NULL, after NULL, life NULL, each_turn NULL,
       time_out NULL,
       parse_name 0,
       orders 0, number 0,
  has  proper transparent,
-) when defining a player-character.

The player is a player-character that varies.

The yourself is an undescribed player-character.
The Inform object of yourself is "selfobj".

The carrying capacity of the player is X means that the carrying
capacity of yourself is X.


Section SR1/9 - Vehicles

A vehicle is a kind of container.
A vehicle is always enterable.
A vehicle is usually not portable.
Include (- with before [; Go: return 1; ], -) when defining a vehicle.


Section SR1/10 - Backdrops

The specification of backdrop is "Represents an aspect of the landscape
or architecture which extends across more than one room: for instance,
a stream, the sky or a long carpet."

A backdrop is usually scenery.
A backdrop is always fixed in place.


Section SR1/11 - Inform 6 equivalents

The description translates into Inform as "description".
Initial appearance translates into Inform as "initial".
The printed name translates into Inform as "short_name".
The printed plural name translates into Inform as "plural".
Lit translates into Inform as "light".
Lighted translates into Inform as "light".
Switched on translates into Inform as "on".
Score for visiting translates into Inform as "score".
Score translates into Inform as "score".
Open translates into Inform as "open".
Openable translates into Inform as "openable".
Locked translates into Inform as "locked".
Lockable translates into Inform as "lockable".
The matching key translates into Inform as "with_key".
Transparent translates into Inform as "transparent".
Fixed in place translates into Inform as "static".
Worn translates into Inform as "worn".
Edible translates into Inform as "edible".
Enterable translates into Inform as "enterable".
Undescribed translates into Inform as "concealed".
Scenery translates into Inform as "scenery".
Inform library door translates into Inform as "door".
Inform library supporter translates into Inform as "supporter".
Inform library container translates into Inform as "container".
Wearable translates into Inform as "clothing".
Inform library switchable translates into Inform as "switchable".
The other side translates into Inform as "door_to".
Visited translates into Inform as "visited".
Inform library animate object translates into Inform as "animate".
Inform library male translates into Inform as "male".
Female translates into Inform as "female".
Pushable between rooms translates into Inform as "pushable".
Carrying capacity translates into Inform as "capacity".
Indefinite article translates into Inform as "article".
Inventory listing translates into Inform as "invent".
Initially carried translates into Inform as "initially_carried".
Handled translates into Inform as "moved".
Marked for listing translates into Inform as "workflag".
Map region translates into Inform as "I7_Map_Region".
Mentioned translates into Inform as "I7_mentioned".


Section SR1/12 - Situation

The location documented var_location is an object that varies.
The score documented var_score is a number that varies.
The maximum score is a number that varies.
The turn count is a number that varies.
The time of day documented var_time is a time that varies.


Section SR1/13 - Current action

The noun documented var_noun is an object that varies.
The second noun is an object that varies.
The person asked documented var_person_asked is an object that varies.
The reason the action failed documented var_reason is a rule that varies.
The item described is an object that varies.


Section SR1/14 - Used when ruling on accessibility

The person reaching documented var_person_reaching is an object that varies.
[The object in question is an object that varies.]
The container in question is an object that varies.
[The this object is an object that varies.]
The particular possession documented var_particular is a thing that varies.


Section SR1/15 - Used when understanding typed commands

The player's command documented var_command is a snippet that varies.
The matched text is a snippet that varies.
The number understood documented var_understood is a number that varies.
The time understood is a time that varies.
The topic understood is a snippet that varies.


Section SR1/16 - Presentation on screen

The command prompt documented var_prompt is a miscellaneous-value that varies.
The left hand status line documented var_sl is a miscellaneous-value that varies.
The right hand status line is a miscellaneous-value that varies.


Section SR1/17 - Implications

Something locked is usually lockable.

Part SR2 - Rules

Section SR2/1 - Standard Rulebooks

[Do not alter the following list unless matching changes have been
made within the NI compiler.]
Action-processing rules is a rulebook. [0]
Before rules is a rulebook. [1]
Instead rules is a rulebook. [2]
After rules is a rulebook. [3]
Procedural rules is a rulebook. [4]
Accessibility rules is a rulebook. [5]
Action-specific rules is a rulebook. [6]
Carry out rules is a rulebook. [7]
General report rules is a rulebook. [8]
Turn sequence rules is a rulebook. [9]
Reaching inside rules is an object-based-rulebook. [10]
Reaching outside rules is an object-based-rulebook. [11]
General before rules is a rulebook. [12]
Actor-specific before rules is a rulebook. [13]
Location-specific before rules is a rulebook. [14]
Reaction before rules is a rulebook. [15]
Object-specific before rules is a rulebook. [16]
General after rules is a rulebook. [17]
Actor-specific after rules is a rulebook. [18]
Location-specific after rules is a rulebook. [19]
Reaction after rules is a rulebook. [20]
Object-specific after rules is a rulebook. [21]
When play begins is a rulebook. [22]
When play ends is a rulebook. [23]
Daemons register is a rulebook. [24]
Check rules is a rulebook. [25]
Report rules is a rulebook. [26]
Persuasion rules is a rulebook. [27]
Unsuccessful attempt by is a rulebook. [28]
Visibility rules is a rulebook. [29]
[From here on they can be meddled with.]

Every turn rules is a rulebook.
Scene changing rules is a rulebook.


Section SR2/2 - Advance of time

The advance time rule corresponds to routine TS1_R.
The timers and daemons rule corresponds to routine TS2_R.
The each turn properties rule corresponds to routine TS3_R.
The time passes rule corresponds to routine TS4_R.
The adjust light rule corresponds to routine TS5_R.
The note object acquisitions rule corresponds to routine TS6_R.
The timed events rule corresponds to routine ProcessI7Timers.

The first when play begins rule:
	consider the scene changing rules.

The first turn sequence rule:
	consider the scene changing rules;
	consider the every turn rules;
	consider the daemons register;
	consider the timed events rule.
The advance time rule is listed in the turn sequence rulebook.
The timers and daemons rule is listed in the turn sequence rulebook.
The each turn properties rule is listed in the turn sequence rulebook.
The time passes rule is listed in the turn sequence rulebook.
The last turn sequence rule:
	consider the scene changing rules;
	consider the adjust light rule;
	consider the note object acquisitions rule.

The last scene changing rule:
	run scene change machinery.

The non-player character action rule corresponds to routine I7_NPCA.


Section SR2/3 - Accessibility of objects

The access to scoped objects rule corresponds to routine OIU_Scoped.
The access through barriers rule corresponds to routine OIU_Barrier.
The can't reach inside closed containers rule corresponds to routine OIUB_CCI.
The can't reach outside closed containers rule corresponds to routine OIUB_CCO.
The can't reach inside rooms rule corresponds to routine OIUB_RI.
The basic accessibility rule corresponds to routine PA_R.
The can't act in the dark rule corresponds to routine CSITDR.

The first accessibility rule:
	abide by the access to scoped objects rule.

The last accessibility rule:
	abide by the access through barriers rule.

The last reaching inside rule:
	abide by the can't reach inside rooms rule;
	abide by the can't reach inside closed containers rule.

The last reaching outside rule:
	abide by the can't reach outside closed containers rule.

The last visibility rule:
	abide by the can't act in the dark rule.


Section SR2/4 - Action processing

The last general before rule: abide by I6 GamePreRoutine.
The last actor-specific before rule: abide by I6 orders property.
The last location-specific before rule: abide by I6 location before.
The last reaction before rule: abide by I6 react_before property.
The last object-specific before rule: abide by I6 object before.

The first general after rule: abide by I6 GamePostRoutine.
[I6 does not have actor-specific afters, asymmetrically.]
The first location-specific after rule: abide by I6 location after.
The first reaction after rule: abide by I6 react_after property.
The first object-specific after rule: abide by I6 object after.

The first action-processing rule:
	abide by the before rules.

The last action-processing rule:
	abide by the basic accessibility rule;
	abide by the instead rules;
	abide by the non-player character action rule;
	abide by the action-specific rules;
	rule succeeds.

The last before rule:
	abide by the general before rules;
	abide by the actor-specific before rules;
	abide by the location-specific before rules;
	abide by the reaction before rules;
	abide by the object-specific before rules.

The last action-specific rule:
	cause the action to take place.

The first after rule:
	abide by the object-specific after rules;
	abide by the reaction after rules;
	abide by the location-specific after rules;
	abide by the actor-specific after rules;
	abide by the general after rules.


Section SR2/5 - Activity rules

[Activities must not be created until the basic rulebooks are
in place. The order matters too, as these must match constants
defined in the I6 library, so add new ones at the end.]

Printing the name of something (documented at act_pn) is an activity.
Listing contents of something (documented at act_lc) is an activity.
Grouping together something (documented at act_gt) is an activity.
Constructing the status line (documented at act_csl) is an activity.
Listing nondescript items of something (documented at act_lni) is an activity.
Deciding the scope of something (documented at act_ds, future action) is an activity.
Supplying a missing noun (documented at act_smn) is an activity.
Supplying a missing second noun (documented at act_smn) is an activity.
Reading a command (documented at act_reading) is an activity.
Deciding whether all includes something (documented at act_all, future action) is an activity.
Printing the player's obituary (documented at act_obit) is an activity.
Amusing a victorious player (documented at act_amuse) is an activity.
Printing the banner text (documented at act_banner) is an activity.
Printing the plural name of something (documented at act_ppn) is an activity.
Deciding the concealed possessions of something (documented at act_con) is an activity.
Printing a refusal to act in the dark (documented at act_toodark) is an activity.
Printing the announcement of darkness (documented at act_nowdark) is an activity.
Printing the name of a dark room (documented at act_darkname) is an activity.
Printing the description of a dark room (documented at act_darkdesc) is an activity.
Printing room description details of something (documented at act_details) is an activity.
Printing a parser error (documented at act_parsererror) is an activity.

The last for printing the name rule:
	cause the description to take place.
The last for listing contents rule:
	cause the listing to take place.

The print obituary headline rule corresponds to routine OBIT_HEAD.
The print final score rule corresponds to routine OBIT_FINAL.
The display final status line rule corresponds to routine OBIT_DISP.

The last for printing the player's obituary rule:
	abide by the print obituary headline rule;
	abide by the print final score rule;
	abide by the display final status line rule.

Before printing the name of a thing (called XXXX): now XXXX is mentioned.

Writing a paragraph about something (documented at act_wpa) is an activity.
Include (- with describe [ o; if (self has (+ mentioned +) ) rtrue; say__p = 0;  
CarryOutActivity( (+ writing a paragraph about +) , self); if (say__p) {
give self (+ mentioned +); rtrue; } ], -) when defining a thing.


Section SR2/6 - Use options

Use American dialect translates as (- Constant DIALECT_US; -).
Use the serial comma translates as (- Constant I7_SERIAL_COMMA; -).
Use full-length room descriptions translates as (- Constant I7_LOOKMODE = 2; -).
Use abbreviated room descriptions translates as (- Constant I7_LOOKMODE = 3; -).
Use memory economy translates as (- Constant I7_ECONOMY; -).
Use no scoring translates as (- Constant I7_NOSCORE; -).
Use command line echoing translates as (- Constant I7_ECHOCOM; -).
Use undo prevention translates as (- Constant PREVENT_UNDO; -).
Use predictable randomisation translates as (- Constant FIX_RNG; -).

Part SR3 - Actions

Section SR3/1 - Generic action patterns

[Doing something corresponds to action "_Pattern_".
Doing something to corresponds to action "_Pattern_".
Doing something with corresponds to action "_Pattern_".
Doing anything corresponds to action "_Pattern_".
Doing anything to corresponds to action "_Pattern_".
Doing anything with corresponds to action "_Pattern_".]

Section SR3/2 - Actions which move things

Taking inventory is an action corresponding to Inv
	anybody
	past participle taken,
	applying to nothing
	- check -
	none
	- carry-out -
	default inventory style rule = InvSub_O1
	print empty inventory rule = InvSub_O2
	print standard inventory rule = InvSub_O3
	use inventory to set pronouns rule = InvSub_O4
	- report -
	report other people taking inventory rule = InvSub_R1.

Taking is an action corresponding to Take
	anybody
	past participle taken
	applying to one thing
	- check -
	avoid unnecessary implicit taking rule = TakeSub_C1
	can't take yourself rule = TakeSub_C2
	can't take other people rule = TakeSub_C3
	can't take component parts rule = OIUB_CP
	determine common ancestor for taking rule = TakeSub_C4
	can't take people's possessions rule = OIUB_AP
	[can't take from distant locations rule = TakeSub_C5]
	can't take what you're inside rule = TakeSub_C6
	can't take what's already taken rule = TakeSub_C7
	check let-go-before rule = TakeSub_C8
	can't take scenery rule = TakeSub_C9
	can't take what's fixed in place rule = TakeSub_C10
	use player's holdall to avoid exceeding carrying capacity rule = TakeSub_C11
	can't exceed carrying capacity rule = TakeSub_C12
	- carry-out -
	standard taking rule = TakeSub_O1
	check let-go-after rule = TakeSub_O2
	- report -
	don't report successful implicit takes rule = TakeSub_R1
	standard report taking rule = TakeSub_R2.

Removing it from is an action corresponding to Remove
	anybody
	applying to two things
	- check -
	can't remove from closed containers rule = RemoveSub_C1
	can't remove what's not inside rule = RemoveSub_C2
	can't remove from people rule = RemoveSub_C3
	can't take yourself rule = qv
	can't take other people rule = qv
	can't take component parts rule = qv
	determine common ancestor for taking rule = qv
	can't take people's possessions rule = qv
	[can't take from distant locations rule = qv]
	can't take what you're inside rule = qv
	can't take what's already taken rule = qv
	check let-go-before rule = qv
	can't take scenery rule = qv
	can't take what's fixed in place rule = qv
	use player's holdall to avoid exceeding carrying capacity rule = qv
	can't exceed carrying capacity rule = qv
	- carry-out -
	standard taking rule = qv
	check after-rules for taking too rule = RemoveSub_O2
	- report -
	standard report removing rule = RemoveSub_R1.

Dropping is an action corresponding to Drop
	anybody
	applying to one thing
	- check -
	can't drop yourself rule = DropSub_C1
	can't drop what's already dropped rule = DropSub_C2
	can't drop what's not held rule = DropSub_C3
	can't drop clothes being worn rule = DropSub_C4
	can't drop if this exceeds carrying capacity rule = DropSub_C5
	- carry-out -
	standard dropping rule = DropSub_O1
	- report -
	standard report dropping rule = DropSub_R1;

Putting it on is an action corresponding to PutOn
	anybody
	past participle put
	applying to two things
	- check -
	convert put to drop where possible rule = PutOnSub_C1
	can't put what's not held rule = PutOnSub_C2
	can't put something on itself rule = PutOnSub_C3
	check receive-before for supporter rule = PutOnSub_C4
	can't put onto what's not a supporter rule = PutOnSub_C5
	can't put onto something being carried rule = PutOnSub_C6
	can't put clothes being worn rule = PutOnSub_C7
	can't put if this exceeds carrying capacity rule = PutOnSub_C8
	- carry-out -
	standard putting rule = PutOnSub_O1
	check receive-after for supporter rule = PutOnSub_O2
	- report -
	standard report putting rule = PutOnSub_R1;

Inserting it into is an action corresponding to Insert
	anybody
	applying to two things
	- check -
	convert insert to drop where possible rule = InsertSub_C1
	can't insert what's not held rule = InsertSub_C2
	can't insert something into itself rule = InsertSub_C3
	can't insert component parts rule = OIUB_CP
	check receive-before for container rule = InsertSub_C4
	can't insert into closed containers rule = InsertSub_C5
	can't insert into what's not a container rule = InsertSub_C6
	can't insert clothes being worn rule = InsertSub_C7
	can't insert if this exceeds carrying capacity rule = InsertSub_C8
	- carry-out -
	standard inserting rule = InsertSub_O1
	check receive-after for container rule = InsertSub_O2
	- report -
	standard report inserting rule = InsertSub_R1;


Section SR3/3 - Actions which move the player

Waiting is an action corresponding to Wait
	anybody
	applying to nothing
	- check -
	none
	- carry-out -
	none
	- report -
	standard report waiting rule = WaitSub_R1.

Going is an action corresponding to Go
	anybody
	past participle gone
	applying to one visible thing
	- check -
	set up going rule = GoSub_C1
	check to see if in a vehicle rule = GoSub_C2
	can't travel in what's not a vehicle rule = GoSub_C3
	determine direction property rule = GoSub_C4
	determine map connection rule = GoSub_C5
	print textual map connections rule = GoSub_C6
	consult routine map connections rule = GoSub_C7
	can't go that way rule = GoSub_C8
	can't go through concealed doors rule = GoSub_C9
	can't go through closed doors rule = GoSub_C10
	determine what's through door rule = GoSub_C11
	- carry-out -
	move player and vehicle rule = GoSub_O1
	move floating objects rule = GoSub_O2
	check light in new location rule = GoSub_O3
	- report -
	describe room gone into rule = GoSub_R1;

Entering is an action corresponding to Enter
	anybody
	applying to one thing
	- check -
	convert enter door into go rule = EnterSub_C1
	convert enter compass direction into go rule = EnterSub_C2
	can't enter what's already entered rule = EnterSub_C3
	can't enter what's not enterable rule = EnterSub_C4
	can't enter closed containers rule = EnterSub_C5
	determine common ancestor for entering rule = EnterSub_C6
	can't enter something carried rule = EnterSub_C7
	implicitly pass through other barriers rule = EnterSub_C8
	- carry-out -
	standard entering rule = EnterSub_O1
	- report -
	standard report entering rule = EnterSub_R1
	describe contents entered into rule = EnterSub_R2;

Exiting is an action corresponding to Exit
	anybody
	applying to nothing
	- check -
	convert exit into go out rule = ExitSub_C1
	can't exit when not inside anything rule = ExitSub_C2
	can't exit closed containers rule = ExitSub_C3
	- carry-out -
	standard exiting rule = ExitSub_O1
	- report -
	standard report exiting rule = ExitSub_R1
	describe room emerged into rule = ExitSub_R2;

Getting off is an action corresponding to GetOff
	anybody
	past participle got
	applying to one thing
    - check -
    convert get off to exit where possible rule = GetOffSub_C1
    can't get off things rule = GetOffSub_C2
	- carry-out -
	none
 	- report -
	none.


Section SR3/4 - Actions involving sight

Looking is an action corresponding to Look
	anybody
	applying to nothing
	[requiring light]
	- check -
	none
	- carry-out -
	determine visibility ceiling rule = LookSub_O1
	room description heading rule = LookSub_O2
	room description body text rule = LookSub_O3
	room description paragraphs about objects rule = LookSub_O4
	consult LookRoutine entry point rule = LookSub_O5
	check new arrival rule = LookSub_O6
	- report -
	report other people looking rule = LookSub_R1.

Examining is an action corresponding to Examine
	anybody
	applying to one visible thing
	requiring light
	- check -
	none
	- carry-out -
	examine undescribed containers rule = ExamineSub_O1
	examine undescribed devices rule = ExamineSub_O2
	examine undescribed things rule = ExamineSub_O3
	standard examining rule = ExamineSub_O4
	examine described devices rule = ExamineSub_O5
	- report -
	report other people examining rule = ExamineSub_R1.

Looking under is an action corresponding to LookUnder
	anybody
	applying to one visible thing
	requiring light
	- check -
	none
	- carry-out -
	standard looking under rule = LookUnderSub_O1
	- report -
	report other people looking under rule = LookUnderSub_R1.

Searching is an action corresponding to Search
	anybody
	applying to one thing
	requiring light
	- check -
	can't search unless container or supporter rule = SearchSub_C1
	can't search closed opaque containers rule = SearchSub_C2
	- carry-out -
	standard searching rule = SearchSub_O1
	- report -
	standard search containers rule = SearchSub_R1
	standard search supporters rule = SearchSub_R2
	report other people searching rule = SearchSub_R3.

Consulting it about is an action corresponding to Consult
	anybody
	applying to one thing and one topic
	- check -
	none
	- carry-out -
	none
	- report -
	block consulting rule = ConsultSub_C1.


Section SR3/5 - Actions which change the state of things

Locking it with is an action corresponding to Lock
	anybody
	applying to two things
	- check -
	can't lock without a lock rule = LockSub_C1
	can't lock what's already locked rule = LockSub_C2
	can't lock what's open rule = LockSub_C3
	can't lock without the correct key rule = LockSub_C4
	- carry-out -
	standard locking rule = LockSub_O1
	- report -
	standard report locking rule = LockSub_R1.

Unlocking it with is an action corresponding to Unlock
	anybody
	applying to two things
	- check -
	can't unlock without a lock rule = UnlockSub_C1
	can't unlock what's already unlocked rule = UnlockSub_C2
	can't unlock without the correct key rule = UnlockSub_C3
	- carry-out -
	standard unlocking rule = UnlockSub_O1
	- report -
	standard report unlocking rule = UnlockSub_R1.

Switching on is an action corresponding to SwitchOn
	anybody
	applying to one thing
	- check -
	can't switch on unless switchable rule = SwitchOnSub_C1
	can't switch on what's already on rule = SwitchOnSub_C2
	- carry-out -
	standard switching on rule = SwitchOnSub_O1
	- report -
	standard report switching on rule = SwitchOnSub_R1.

Switching off is an action corresponding to SwitchOff
	anybody
	applying to one thing
	- check -
	can't switch off unless switchable rule = SwitchOffSub_C1
	can't switch off what's already off rule = SwitchOffSub_C2
	- carry-out -
	standard switching off rule = SwitchOffSub_O1
	- report -
	standard report switching off rule = SwitchOffSub_R1.

Opening is an action corresponding to Open
	anybody
	applying to one thing
	- check -
	can't open unless openable rule = OpenSub_C1
	can't open what's locked rule = OpenSub_C2
	can't open what's already open rule = OpenSub_C3
	- carry-out -
	standard opening rule = OpenSub_O1
	- report -
	reveal any newly visible exterior rule = OpenSub_R1
	standard report opening rule = OpenSub_R2.

Closing is an action corresponding to Close
	anybody
	applying to one thing
	- check -
	can't close unless openable rule = CloseSub_C1
	can't close what's already closed rule = CloseSub_C2
	- carry-out -
	standard closing rule = CloseSub_O1
	- report -
	standard report closing rule = CloseSub_R1.

Wearing is an action corresponding to Wear
	anybody
	past participle worn
	applying to one thing
	- check -
	can't wear what's not clothing rule = WearSub_C1
	can't wear what's not held rule = WearSub_C2
	can't wear what's already worn rule = WearSub_C3
	- carry-out -
	standard wearing rule = WearSub_O1
	- report -
	standard report wearing rule = WearSub_R1.

Taking off is an action corresponding to Disrobe
	anybody
	past participle taken
	applying to one thing
	- check -
	can't take off what's not worn rule = DisrobeSub_C1
	- carry-out -
	standard taking off rule = DisrobeSub_O1
	- report -
	standard report taking off rule = DisrobeSub_R1.

Eating is an action corresponding to Eat
	anybody
	past participle eaten
	applying to one thing
	- check -
	can't eat unless edible rule = EatSub_C1
	can't eat clothing without removing it first rule = EatSub_C2
	- carry-out -
	standard eating rule = EatSub_O1
	- report -
	standard report eating rule = EatSub_R1.


Section SR3/6 - Actions concerning other people

Giving it to is an action corresponding to Give
	anybody
	past participle given
	applying to two things
	- check -
	can't give what you haven't got rule = GiveSub_C1
	can't give to yourself rule = GiveSub_C2
	can't give to a non-person rule = GiveSub_C3
	check life property for giving rule = GiveSub_C4
	block giving rule = GiveSub_C5
	- carry-out -
	standard giving rule = GiveSub_O1
	- report -
	standard report giving rule = GiveSub_R1.

Showing it to is an action corresponding to Show
	past participle shown
	applying to two things
	- check -
	can't show what you haven't got rule = ShowSub_C1
	convert show to yourself to examine rule = ShowSub_C2
	check life property for showing rule = ShowSub_C3
	block showing rule = ShowSub_C4
	- carry-out -
	none
	- report -
	none.

Waking is an action corresponding to WakeOther
	past participle woken
	applying to one thing
	- check -
	check life property for waking rule = WakeOtherSub_C1
	block waking rule = WakeOtherSub_C2
	- carry-out -
	none
	- report -
	none.

Throwing it at is an action corresponding to ThrowAt
	past participle thrown
	applying to two things
	- check -
	check thrown-at rule = ThrowAtSub_C1
	implicitly remove thrown clothing rule = ThrowAtSub_C2
	futile to throw things at inanimate objects rule = ThrowAtSub_C3
	check life property for throwing at rule = ThrowAtSub_C4
	block throwing at rule = ThrowAtSub_C5
	- carry-out -
	none
	- report -
	none.

Attacking is an action corresponding to Attack
	applying to one thing
	- check -
	check life property for attacking rule = AttackSub_C1
	block attacking rule = AttackSub_C2
	- carry-out -
	none
	- report -
	none.

Kissing is an action corresponding to Kiss
	applying to one thing
	- check -
	kissing yourself rule = KissSub_C1
	check life property for kissing rule = KissSub_C2
	block kissing rule = KissSub_C3
	- carry-out -
	none
	- report -
	none.

Answering it that is an action corresponding to Answer
	applying to one thing and one topic
	- check -
	check life property for answering rule = AnswerSub_C1
	- carry-out -
	none
	- report -
	block answering rule = AnswerSub_C2.

Telling it about is an action corresponding to Tell
	past participle told
	applying to one thing and one topic
	- check -
	telling yourself rule = TellSub_C1
	check life property for telling rule = TellSub_C2
	- carry-out -
	none
	- report -
	block telling rule = TellSub_C3.

Asking it about is an action corresponding to Ask
	applying to one thing and one topic
	- check -
	check life property for asking rule = AskSub_C1
	- carry-out -
	none
	- report -
	block asking rule = AskSub_C2.

Asking it for is an action corresponding to AskFor
	anybody
	applying to two things
	- check -
	asking yourself for something rule = AskForSub_C1
	translate asking for to giving rule = AskForSub_C2
	- carry-out -
	none
	- report -
	none.

Section SR3/7 - Actions which are checked but then do nothing unless rules intervene

Touching is an action corresponding to Touch
	anybody
	applying to one thing
	- check -
	none
	- carry-out -
	none
	- report -
	report touching yourself rule = TouchSub_R1
	report touching other people rule = TouchSub_R2
	report touching things rule = TouchSub_R3.

Waving is an action corresponding to Wave
	anybody
	applying to one thing
	- check -
	can't wave what's not held rule = WaveSub_C1
	- carry-out -
	none
	- report -
	report waving things rule = WaveSub_R1.

Pulling is an action corresponding to Pull
	anybody
	applying to one thing
	- check -
	can't pull what's fixed in place rule = PullSub_C1
	can't pull scenery rule = PullSub_C2
	can't pull people rule = PullSub_C3
	- carry-out -
	none
	- report -
	report pulling rule = PullSub_R1.

Pushing is an action corresponding to Push
	anybody
	applying to one thing
	- check -
	can't push what's fixed in place rule = PushSub_C1
	can't push scenery rule = PushSub_C2
	can't push people rule = PushSub_C3
	- carry-out -
	none
	- report -
	report pushing rule = PushSub_R1.

Turning is an action corresponding to Turn
	anybody
	applying to one thing
	- check -
	can't turn what's fixed in place rule = TurnSub_C1
	can't turn scenery rule = TurnSub_C2
	can't turn people rule = TurnSub_C3
	- carry-out -
	none
	- report -
	report turning rule = TurnSub_R1.

Pushing it to is an action corresponding to PushDir
	anybody
	applying to two things
	- check -
	block pushing in directions rule = PushDirSub_C1
	- carry-out -
	none
	- report -
	none.

Squeezing is an action corresponding to Squeeze
	anybody
	applying to one thing
	- check -
	innuendo about squeezing people rule = SqueezeSub_C1
	- carry-out -
	none
	- report -
	report squeezing rule = SqueezeSub_R1.


Section SR3/8 - Actions which always do nothing unless rules intervene

Saying yes is an action corresponding to Yes
	past participle said
	applying to nothing
	- check -
	block saying yes rule = YesSub_C1
	- carry-out -
	none
	- report -
	none.

Saying no is an action corresponding to No
	past participle said
	applying to nothing
	- check -
	block saying no rule = NoSub_C1
	- carry-out -
	none
	- report -
	none.

Burning is an action corresponding to Burn
	applying to one thing
	- check -
	block burning rule = BurnSub_C1
	- carry-out -
	none
	- report -
	none.

Praying is an action corresponding to Pray
	applying to nothing
	- check -
	block praying rule = PraySub_C1
	- carry-out -
	none
	- report -
	none.

Waking up is an action corresponding to Wake
	past participle woken
	applying to nothing
	- check -
	block waking up rule = WakeSub_C1
	- carry-out -
	none
	- report -
	none.

Thinking is an action corresponding to Think
	past participle thought
	applying to nothing
	- check -
	block thinking rule = ThinkSub_C1
	- carry-out -
	none
	- report -
	none.

Smelling is an action corresponding to Smell
	applying to one thing
	- check -
	block smelling rule = SmellSub_C1
	- carry-out -
	none
	- report -
	none.

Listening to is an action corresponding to Listen
	applying to one thing
	- check -
	block listening rule = ListenSub_C1
	- carry-out -
	none
	- report -
	none.

Tasting is an action corresponding to Taste
	applying to one thing
	- check -
	block tasting rule = TasteSub_C1
	- carry-out -
	none
	- report -
	none.

Digging is an action corresponding to Dig
	past participle dug
	applying to one thing
	- check -
	block digging rule = DigSub_C1
	- carry-out -
	none
	- report -
	none.

Cutting is an action corresponding to Cut
	past participle cut
	applying to one thing
	- check -
	block cutting rule = CutSub_C1
	- carry-out -
	none
	- report -
	none.

Jumping is an action corresponding to Jump
	applying to nothing
	- check -
	block jumping rule = JumpSub_C1
	- carry-out -
	none
	- report -
	none.

Jumping over is an action corresponding to JumpOver
	applying to one thing
	- check -
	block jumping over rule = JumpOverSub_C1
	- carry-out -
	none
	- report -
	none.

Tying it to is an action corresponding to Tie
	past participle tied
	applying to two things
	- check -
	block tying rule = TieSub_C1
	- carry-out -
	none
	- report -
	none.

Drinking is an action corresponding to Drink
	past participle drunk
	applying to one thing
	- check -
	block drinking rule = DrinkSub_C1
	- carry-out -
	none
	- report -
	none.

Filling is an action corresponding to Fill
	applying to one thing
	- check -
	block filling rule = FillSub_C1
	- carry-out -
	none
	- report -
	none.

Saying sorry is an action corresponding to Sorry
	past participle said
	applying to nothing
	- check -
	block saying sorry rule = SorrySub_C1
	- carry-out -
	none
	- report -
	none.

Swearing obscenely is an action corresponding to Strong
	censored
	past participle sworn
	applying to nothing
	- check -
	block swearing obscenely rule = StrongSub_C1
	- carry-out -
	none
	- report -
	none.

Swearing mildly is an action corresponding to Mild
	censored
	past participle sworn
	applying to nothing
	- check -
	block swearing mildly rule = MildSub_C1
	- carry-out -
	none
	- report -
	none.

Swimming is an action corresponding to Swim
	past participle swum
	applying to nothing
	- check -
	block swimming rule = SwimSub_C1
	- carry-out -
	none
	- report -
	none.

Swinging is an action corresponding to Swing
	past participle swung
	applying to one thing
	- check -
	block swinging rule = SwingSub_C1
	- carry-out -
	none
	- report -
	none.

Blowing is an action corresponding to Blow
	past participle blown
	applying to one thing
	- check -
	block blowing rule = BlowSub_C1
	- carry-out -
	none
	- report -
	none.

Rubbing is an action corresponding to Rub
	applying to one thing
	- check -
	block rubbing rule = RubSub_C1
	- carry-out -
	none
	- report -
	none.

Setting it to is an action corresponding to SetTo
	past participle set
	applying to one thing and one topic
	- check -
	block setting to rule = SetToSub_C1
	- carry-out -
	none
	- report -
	none.

Waving hands is an action corresponding to WaveHands
	applying to nothing
	- check -
	block waving hands rule = WaveHandsSub_C1
	- carry-out -
	none
	- report -
	none.

Buying is an action corresponding to Buy
	past participle bought
	applying to one thing
	- check -
	block buying rule = BuySub_C1
	- carry-out -
	none
	- report -
	none.

Singing is an action corresponding to Sing
	past participle sung
	applying to nothing
	- check -
	block singing rule = SingSub_C1
	- carry-out -
	none
	- report -
	none.

Climbing is an action corresponding to Climb
	applying to one thing
	- check -
	block climbing rule = ClimbSub_C1
	- carry-out -
	none
	- report -
	none.

Sleeping is an action corresponding to Sleep
	past participle slept
	applying to nothing
	- check -
	block sleeping rule = SleepSub_C1
	- carry-out -
	none
	- report -
	none.


Section SR3/9 - Actions which happen out of world

Requesting the score is an action corresponding to Score
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	announce the score rule = ScoreSub_O1
	- report -
	none.

Requesting the full score is an action corresponding to FullScore
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	announce the full score rule = FullScoreSub_O1
	- report -
	none.

Quitting the game is an action corresponding to Quit
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	quit the game rule = QuitSub_O1
	- report -
	none.

Saving the game is an action corresponding to Save
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	save the game rule = SaveSub_O1
	- report -
	none.

Restoring the game is an action corresponding to Restore
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	restore the game rule = RestoreSub_O1
	- report -
	none.

Restarting the game is an action corresponding to Restart
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	restart the game rule = RestartSub_O1
	- report -
	none.

Verifying the story file is an action corresponding to Verify
	out of world
	past participle verified
	applying to nothing
	- check -
	none
	- carry-out -
	verify the story file rule = VerifySub_O1
	- report -
	none.

Requesting the story file version is an action corresponding to Version
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	announce the story file version rule = VersionSub_O1
	- report -
	none.

Switching the story transcript on is an action corresponding to ScriptOn
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	switch the story transcript on rule = ScriptOnSub_O1
	- report -
	none.

Switching the story transcript off is an action corresponding to ScriptOff
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	switch the story transcript off rule = ScriptOffSub_O1
	- report -
	none.

Preferring abbreviated room descriptions is an action corresponding to LMode3
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	prefer abbreviated room descriptions rule = LMode3Sub_O1
	- report -
	none.

Preferring unabbreviated room descriptions is an action corresponding to LMode2
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	prefer unabbreviated room descriptions rule = LMode2Sub_O1
	- report -
	none.

Preferring sometimes abbreviated room descriptions is an action corresponding to LMode1
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	prefer sometimes abbreviated room descriptions rule = LMode1Sub_O1
	- report -
	none.

Requesting the pronoun meanings is an action corresponding to Pronouns
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	announce the pronoun meanings rule = PronounsSub_O1
	- report -
	none.

Switching score notification on is an action corresponding to NotifyOn
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	switch score notification on rule = NotifyOnSub_O1
	- report -
	none.

Switching score notification off is an action corresponding to NotifyOff
	out of world
	applying to nothing
	- check -
	none
	- carry-out -
	switch score notification off rule = NotifyOffSub_O1
	- report -
	none.

Section SR3/9 - Grammar

Understand "take [things]" as taking.
Understand "take off [something]" as taking off.
Understand "take [things inside] from [something]" as removing it from.
Understand "take [things inside] off [something]" as removing it from.
Understand "take inventory" as taking inventory.
Understand the commands "carry" and "hold" as "take".

Understand "get out/off/up" as exiting.
Understand "get [things]" as taking.
Understand "get in/into/on/onto [something]" as entering.
Understand "get off [something]" as getting off.
Understand "get [things inside] from [something]" as removing it from.

Understand "pick up [things]" or "pick [things] up" as taking.

Understand "stand" or "stand up" as exiting.
Understand "stand on [something]" as entering.

Understand "remove [something held]" as taking off.
Understand "remove [things]" as taking.
Understand "remove [things inside] from [something]" as removing it from.

Understand "shed [something held]" as taking off.
Understand the commands "doff" and "disrobe" as "shed".

Understand "wear [something held]" as wearing.
Understand the command "don" as "wear".

Understand "put [other things] in/inside/into [something]" as inserting it into.
Understand "put [other things] on/onto [something]" as putting it on.
Understand "put on [something held]" as wearing.
Understand "put down [things held]" or "put [things held] down" as dropping.

Understand "insert [other things] in/into [something]" as inserting it into.

Understand "drop [things held]" as dropping.
Understand "drop [other things] in/into/down [something]" as inserting it into.
Understand "drop [other things] on/onto [something]" as putting it on.
Understand "drop [something held] at/against/on/onto [something]" as throwing it at.
Understand the commands "throw" and "discard" as "drop".

Understand "give [something held] to [someone]" as giving it to.
Understand "give [someone] [something held]" as giving it to (with nouns reversed).
Understand the commands "pay" and "offer" and "feed" as "give".

Understand "show [someone] [something held]" as showing it to (with nouns reversed).
Understand "show [something held] to [someone]" as showing it to.
Understand the commands "present" and "display" as "show".

Understand "go" as going.
Understand "go [direction]" as going.
Understand "go [something]" as entering.
Understand "go into/in/inside/through [something]" as entering.
Understand the commands "walk", "leave" and "run" as "go".

Understand "inventory" as taking inventory.
Understand the commands "i" and "inv" as "inventory".

Understand "look" as looking.
Understand "look at [something]" as examining.
Understand "look inside/in/into/through [something]" as searching.
Understand "look under [something]" as looking under.
Understand "look up [text] in [something]" as consulting it about (with nouns reversed).
Understand the command "l" as "look".

Understand "consult [something] on/about [text]" as consulting it about.

Understand "open [something]" as opening.
Understand "open [something] with [something held]" as unlocking it with.
Understand the commands "unwrap", "uncover" as "open".

Understand "close [something]" as closing.
Understand "close up [something]" as closing.
Understand "close off [something]" as switching off.
Understand the commands "shut" and "cover" as "close".

Understand "enter [something]" as entering.
Understand the command "cross" as "enter".

Understand "sit on top of [something]" as entering.
Understand "sit on/in/inside [something]" as entering.

Understand "exit" as exiting.
Understand the command "out" as "exit".

Understand "examine [something]" as examining.
Understand the commands "x", "watch", "describe" and "check" as "examine".

Understand "read [something]" as examining.
Understand "read about [text] in [something]" as consulting it about (with nouns reversed).
Understand "read [text] in [something]" as consulting it about (with nouns reversed).

Understand "yes" as saying yes.
Understand the command "y" as "yes".

Understand "no" as saying no.

Understand "sorry" as saying sorry.

Understand "shit" as swearing obscenely.
Understand the commands "fuck" and "damn" as "shit".

Understand "bother" as swearing mildly.
Understand the commands "curses", "drat" and "darn" as "bother".

Understand "search [something]" as searching.

Understand "wave" as waving hands.

Understand "wave [something]" as waving.

Understand "set [something] to [text]" as setting it to.
Understand the command "adjust" as "set".

Understand "pull [something]" as pulling.
Understand the command "drag" as "pull".

Understand "push [something]" as pushing.
Understand "push [something] [direction]" or "push [something]
to [direction]" as pushing it to.
Understand the commands "move", "shift", "clear" and "press" as "push".

Understand "turn [something]" as turning.
Understand "turn [something] on" or "turn on [something]" as switching on.
Understand "turn [something] off" or "turn off [something]" as switching off.
Understand the commands "rotate", "twist", "unscrew" and "screw" as "turn".

Understand "switch [something]" or "switch [something] on" as switching on.
Understand "switch [something] off" or "switch off [something]" as switching off.

Understand "lock [something] with [something held]" as locking it with.

Understand "unlock [something] with [something held]" as unlocking it with.

Understand "attack [something]" as attacking.
Understand the commands "break", "smash", "hit", "fight", "torture", "wreck",
"crack", "destroy", "murder", "kill", "punch" and "thump" as "attack".

Understand "wait" as waiting.
Understand the command "z" as "wait".

Understand "answer [text] to [someone]" as answering it that (with nouns reversed).
Understand the commands "say", "shout" and "speak" as "answer".

Understand "tell [someone] about [text]" as telling it about.

Understand "ask [someone] about [text]" as asking it about.
Understand "ask [someone] for [something]" as asking it for.

Understand "eat [something held]" as eating.

Understand "sleep" as sleeping.
Understand the command "nap" as "sleep".

Understand "sing" as singing.

Understand "climb [something]" or "climb up/over [something]" as climbing.
Understand the command "scale" as "climb".

Understand "buy [something]" as buying.
Understand the command "purchase" as "buy".

Understand "squeeze [something]" as squeezing.
Understand the command "squash" as "squeeze".

Understand "swim" as swimming.
Understand the command "dive" as "swim".

Understand "swing [something]" or "swing on [something]" as swinging.

Understand "blow [something held]" as blowing.

Understand "pray" as praying.

Understand "wake" or "wake up" as waking up.
Understand "wake [someone]" or "wake [someone] up" or "wake up [someone]"
as waking.
Understand the commands "awake" and "awaken" as "wake".

Understand "kiss [someone]" as kissing.
Understand the commands "embrace" and "hug" as "kiss".

Understand "think" as thinking.

Understand "smell" as smelling.
Understand "smell [something]" as smelling.
Understand the command "sniff" as "smell".

Understand "listen" as listening.
Understand "hear [something]" as listening.
Understand "listen to [something]" as listening.

Rule for supplying a missing noun while smelling (this is the ambient
odour rule): change the noun to the location. Rule for supplying a
missing noun while listening (this is the ambient sound rule): change
the noun to the location. Rule for supplying a missing noun while
going (this is the block vaguely going rule): say "You'll have to say
which compass direction to go in."

Understand "taste [something]" as tasting.

Understand "touch [something]" as touching.
Understand the command "feel" as "touch".

Understand "rub [something]" as rubbing.
Understand the commands "shine", "polish", "sweep", "clean", "dust", "wipe"
and "scrub" as "rub".

Understand "tie [something] to [something]" as tying it to.
Understand the commands "attach", "fix" and "fasten" as "tie".

Understand "burn [something]" as burning.
Understand the command "light" as "burn".

Understand "drink [something]" as drinking.
Understand the commands "swallow" and "sip" as "drink".

Understand "fill [something]" as filling.

Understand "cut [something]" as cutting.
Understand the commands "slice", "prune" and "chop" as "cut".

Understand "jump" as jumping.
Understand "jump over [something]" as jumping over.
Understand the commands "skip" and "hop" as "jump".

Understand "dig [something]" as digging.

Understand "score" as requesting the score.
Understand "full score" or "fullscore" as requesting the full score.
Understand "quit" or "q" as quitting the game.
Understand "save" as saving the game.
Understand "restart" as restarting the game.
Understand "restore" as restoring the game.
Understand "verify" as verifying the story file.
Understand "version" as requesting the story file version.
Understand "script" or "script on" or "transcript" or "transcript on"
	as switching the story transcript on.
Understand "script off" or "transcript off" as switching the story transcript off.
Understand "superbrief" or "short" as preferring abbreviated room descriptions.
Understand "verbose" or "long" as preferring unabbreviated room descriptions.
Understand "brief" or "normal" as preferring sometimes abbreviated room descriptions.
Understand "nouns" or "pronouns" as requesting the pronoun meanings.
Understand "notify" or "notify on" as switching score notification on.
Understand "notify off" as switching score notification off.

Part SR4 - Phrasebook

Section SR4/0 - Saying

To say (something - string-of-text) documented ph_say:
	(- print (I7_string) {something}; -).
To say (something - text-routine):
	(- print (I7_string) {something}; -).
To say (something - number):
	(- print (say__n={something}); -).
To say s: (- I7_say_s(); -).
To say (something - time):
	(- print (PrintTimeOfDay) {something}; -).
To say (something - time) in words:
	(- print (PrintTimeOfDayEnglish) {something}; -).
To say (something - unicode-character):
	(- @print_unicode {something}; -).
To say (something - snippet):
	(- print (PrintSnippet) {something}; -).
To say (something - number) in words:
	(- print (number) say__n={something}; -).
To say the (something - number) in words:
	(- print (number) say__n={something}; -).
To say (something - object):
	(- print (name) {something}; -).
To say a (something - object):
	(- print (a) {something}; -).
To say an (something - object):
	(- print (a) {something}; -).
To say the (something - object):
	(- print (the) {something}; -).
To say The (something - object):
	(- print (The) {something}; -).
To say (something - table-name):
	(- print (PrintTableName) {something}; -).
To say the player's surroundings documented ph_surrounds:
	(- SL_Location(); -).
To say list of extension credits:
	(- I7ExtensionVersions(); -).
To say banner text:
	(- Banner(); -).
To say if (c - condition) documented ph_sayif:
	(- {/} 
.{L#}; if ({c}) say__c=true; else jump {L##}; -).
To say end if:
	(- {/} 
.{L#}; say__c = false; -).
To say otherwise:
	(- {/}
.{L#}; if (say__c==false) say__c=true; else jump {L##}; -).
To say line break:
	(- I7_RunOnParagraph(true); new_line; -).
To say paragraph break:
	(- I7_DivideParagraph(); new_line; -).
To say run paragraph on:
	(- I7_RunOnParagraph(true); -).
To say bracket:
	(- print "["; -).
To say close bracket:
	(- print "]"; -).

Section SR4/1 - The score and the outcome

To change the player to (O - an object):
	(- I7_ChangePlayer({O}); -).
To award (some - number) point:
	(- score=score+{some}; -).
To award (some - number) points:
	(- score=score+{some}; -).
To end the game in death documented ph_end:
	(- deadflag=1; -).
To end the game in victory:
	(- deadflag=2; -).
To end the game saying (finale - text):
	(- deadflag={finale}; -).
To resume the game:
	(- deadflag=0; -).

Section SR4/2 - Actions and activities

To try (doing something - action) documented ph_try:
	(- {doing something}; -).
To silently try (doing something - action):
	(- @push keep_silent; keep_silent=1; {doing something}; @pull keep_silent; -).
To try silently (doing something - action):
	(- @push keep_silent; keep_silent=1; {doing something}; @pull keep_silent; -).

To decide whether the action requires a touchable noun: 
    (- (I7_NeedToTouchNoun()) -).
To decide whether the action requires a touchable second noun: 
    (- (I7_NeedToTouchSecondNoun()) -).
To decide whether the action requires light: 
    (- (I7_NeedLightForAction()) -).

To stop the action documented ph_stop:
	(- rtrue; -) - outcome.
To continue the action:
	(- rfalse; -) - outcome.
To continue the activity:
	(- rfalse; -).

To carry out the (A - activity) activity documented ph_carryout:
	(- CarryOutActivity({A}); -).
To begin the (A - activity) activity:
	(- BeginActivity({A}); -).
To decide whether handling (A - activity) activity:
	(- (~~(ForActivity({A}))) -).
To end the (A - activity) activity:
	(- EndActivity({A}); -).
To carry out the (A - activity) activity with (O - object):
	(- CarryOutActivity({A}, {O}); -).
To begin the (A - activity) activity with (O - object):
	(- BeginActivity({A}, {O}); -).
To decide whether handling (A - activity) activity with (O - object):
	(- (~~(ForActivity({A}, {O}))) -).
To end the (A - activity) activity with (O - object):
	(- EndActivity({A}, {O}); -).
To decide whether (A - activity) activity is going on:
	(- (TestActivity({A})) -).

To do nothing:
	(- ; -).
To it does:
	(- RulebookSucceeds(); rtrue; -).
To it does not:
	(- RulebookFails(); rtrue; -).

Section SR4/3 - Moving and removing things

To remove (something - a thing) from play documented ph_remove:
	(- I7_Remove({something}); -).
To move (something - object) to (something else - object),
	without printing a room description
	or printing an abbreviated room description documented ph_move:
	(- I7_Move({something}, {something else}, {phrase options}, {phrase line}); -).

To decide which object is holder of (something - object) documented ph_holder:
	(- (I7_Holder({something})) -).
To decide which object is next thing held after (something - object):
	(- (sibling({something})) -).
To decide which object is first thing held by (something - object):
	(- (child({something})) -).

To decide whether in (somewhere - an object):
	(- (I7_WhetherIn({somewhere})) -).
To decide whether in darkness:
	(- (location==thedark) -).

To decide which object is best route from (R1 - object) to (R2 - object),
	using doors or using even locked doors:
	(- I7_RouteTo({R1},{R2},0,{phrase options}) -).
To decide which number is number of moves from (R1 - object) to (R2 - object),
	using doors or using even locked doors:
	(- I7_CountRouteTo({R1},{R2},0,{phrase options}) -).
To decide which object is best route from (R1 - object) to (R2 - object) through
	(RS - object-specification-unsub),
	using doors or using even locked doors:
	(- I7_RouteTo({R1},{R2},{P#RS},{phrase options}) -).
To decide which number is number of moves from (R1 - object) to (R2 - object) through
	(RS - object-specification-unsub),
	using doors or using even locked doors:
	(- I7_CountRouteTo({R1},{R2},{P#RS},{phrase options}) -).
To decide which room is room (D - direction) from (R1 - room):
	(- I7_RoomFrom({R1},{D},2) -).
To change (D - direction) exit of (R1 - room) to (R2 - room):
	(- I7_ChangeExit({R1},{D},{R2}); -).
To decide which object is next step via (R - abstract-relation)
	from (O1 - object) to (O2 - object):
	(- I7_RelRouteTo({R},{O1},{O2}) -).
To decide which number is number of steps via (R - abstract-relation)
	from (O1 - object) to (O2 - object):
	(- I7_CountRelRouteTo({R},{O1},{O2}) -).
To decide which room is the front side of (D - object):
	(- I7_FrontSide({D}) -).
To decide which room is the back side of (D - object):
	(- I7_BackSide({D}) -).
To decide which room is the location of (O - object):
	(- I7_Location({O}) -).


Section SR4/4 - Arithmetic

To decide which number is (X - number) + (Y - number)
	arithmetic 0 documented ph_plus: (- ({X}+{Y}) -).
To decide which number is (X - number) - (Y - number) arithmetic 1:
	(- ({X}-{Y}) -).
To decide which number is (X - number) * (Y - number) arithmetic 2:
	(- ({X}*{Y}) -).
To decide which number is (X - number) / (Y - number) arithmetic 3:
	(- (I7_Divide({X},{Y})) -).
To decide which number is (X - number) plus (Y - number) arithmetic 0:
	(- ({X}+{Y}) -).
To decide which number is (X - number) minus (Y - number) arithmetic 1:
	(- ({X}-{Y}) -).
To decide which number is (X - number) times (Y - number) arithmetic 2:
	(- ({X}*{Y}) -).
To decide which number is (X - number) multiplied by (Y - number) arithmetic 2:
	(- ({X}*{Y}) -).
To decide which number is (X - number) divided by (Y - number) arithmetic 3:
	(- (I7_Divide({X},{Y})) -).
To decide which number is remainder after dividing (X - number)
	by (Y - number) arithmetic 4:
	(- (I7_Rem({X},{Y})) -).


Section SR4/5 - Time

To decide which time is (t - time) to the nearest (t2 - time) documented ph_nearest:
	(- (RoundOffTime({t},{t2})) -).
To decide which number is the minutes part of (t - time) documented ph_minspart:
	(- ({t}%60) -).
To decide which number is the hours part of (t - time):
	(- ({t}/60) -).
To decide if (t - time) is before (t2 - time):
	(- ((({t}+20*60)%(60*24))<(({t2}+20*60)%(60*24))) -).
To decide if (t - time) is after (t2 - time):
	(- ((({t}+20*60)%(60*24))>(({t2}+20*60)%(60*24))) -).
To decide if it is before (t2 - time):
	(- (((the_time+20*60)%(60*24))<(({t2}+20*60)%(60*24))) -).
To decide if it is after (t2 - time):
	(- (((the_time+20*60)%(60*24))>(({t2}+20*60)%(60*24))) -).
To decide which time is (t - time) before (t2 - time) documented ph_timeshift:
	(- (({t2}-{t}+60*24)%(60*24)) -).
To decide which time is (t - time) after (t2 - time):
	(- (({t2}+{t}+60*24)%(60*24)) -).
To decide which time is (n - number) minutes:
	(- (({n})%(60*24)) -).
To decide which time is (n - number) hours:
	(- (({n}*60)%(60*24)) -).
To (R - rule) in (t - number) turn from now documented ph_future:
	(- SetI7Timer({R}, {t}+1, 0); -).
To (R - rule) in (t - number) turns from now:
	(- SetI7Timer({R}, {t}+1, 0); -).
To (R - rule) at (t - time):
	(- SetI7Timer({R}, {t}, 1); -).
To (R - rule) in (t - time) from now:
	(- SetI7Timer({R}, (the_time+{t})%(60*24), 1); -).
To decide if (sc - scene) is happening documented ph_happening:
	(- (scene_status-->({sc}-1)) -).
To decide if (sc - scene) is not happening:
	(- (scene_status-->({sc}-1) == 0) -).
To decide if (sc - scene) has happened:
	(- (scene_endings-->({sc}-1)) -).
To decide if (sc - scene) has not happened:
	(- (scene_endings-->({sc}-1) == 0) -).
To decide if (sc - scene) has ended:
	(- (scene_endings-->({sc}-1) > 1) -).
To decide if (sc - scene) has not ended:
	(- (scene_endings-->({sc}-1) <= 1) -).
To decide which time is the time since (sc - scene) began documented ph_tsince:
	(- ((the_time - scene_started-->({sc}-1))%(60*24)) -).
To decide which time is the time when (sc - scene) began:
	(- (scene_started-->({sc}-1)) -).


Section SR4/6 - Randomness

To decide which number is a random number from (N - number) to (M - number) documented ph_random:
	(- (random(({M})-({N})+1)+({N})-1) -).
To decide which number is a random number between (N - number) and (M - number):
	(- (random(({M})-({N})+1)+({N})-1) -).
To decide whether a random chance of (N - number) in (M - number) succeeds:
	(- (random({M}) <= {N}) -).
To seed the random-number generator with (N - number):
	(- I7_SeedRNG({N}); -).


Section SR4/7 - Tables

To decide which number is number of rows in (T - table-name) documented ph_numrows:
	(- TableRows({T}) -).
To decide which number is number of blank rows in (T - table-name) documented ph_numblank:
	(- TableBlankRows({T}) -).
To decide which number is number of filled rows in (T - table-name):
	(- TableFilledRows({T}) -).
To decide if there is (TR - table-reference) documented ph_thereis:
	(- (Exists{TR}) -).
To decide if there is no (TR - table-reference):
	(- (Exists{TR} == false) -).
To change (tr - table-reference) to (w - value):
	(- {tr}{-},1,{w}); -).
To delete (tr - table-reference) documented ph_blankout:
	(- {tr}{-},1,I7_TABLE_NOVALUE); -).
To blank out the whole row documented ph_blankout:
	(- {+}TableBlankOutRow(ct_0, ct_1); -).
To choose row (N - number) in (T - table-name) documented ph_chooserow:
	(- {+}ct_0 = {T}; ct_1 = {N}; -).
To choose row with (TC - table-column) of (w - value) in (T - table-name):
	(- {+}ct_0 = {T}; ct_1 = TableRowCorr(ct_0, {TC}, {w}); -).
To choose a blank row in (T - table-name):
	(- {+}ct_0 = {T}; ct_1 = TableBlankRow(ct_0); -).
To choose a random row in (T - table-name):
	(- {+}ct_0 = {T}; ct_1 = TableRandomRow(ct_0); -).

Section SR4/7 - Searching and sorting tables

To repeat through (T - table-name) begin * documented ph_tabrepeat:
	(- {+}ct_0 = {T}; for (ct_1=1:ct_1<=TableRows(ct_0):ct_1++) if (TableRowIsBlank(ct_0,ct_1)==false)  -).
To repeat through (T - table-name) in reverse order begin *:
	(- {+}ct_0 = {T}; for (ct_1=TableRows(ct_0):ct_1>=1:ct_1--) if (TableRowIsBlank(ct_0,ct_1)==false)  -).
To repeat through (T - table-name) in (TC - table-column) order begin *:
	(- {+}ct_0 = {T}; for (ct_1=TableNextRow(ct_0,{TC},0,1):ct_1~=0:ct_1=TableNextRow(ct_0,{TC},ct_1,1))  -).
To repeat through (T - table-name) in reverse (TC - table-column) order begin *:
	(- {+}ct_0 = {T}; for (ct_1=TableNextRow(ct_0,{TC},0,-1):ct_1~=0:ct_1=TableNextRow(ct_0,{TC},ct_1,-1))  -).
To sort (T - table-name) in random order documented ph_sort:
    (- TableShuffle({T}); -).
To sort (T - table-name) in (TC - table-column) order:
	(- TableSort({T}, {TC}, 1); -).
To sort (T - table-name) in reverse (TC - table-column) order:
	(- TableSort({T}, {TC}, -1); -).


Section SR4/8 - Changing properties and variables

To let (n - number variable) be (m - number):
	(- {n} = {m}; -). 
To let (n - time variable) be (m - time):
	(- {n} = {m}; -). 
To let (o - text variable) be (p - text):
	(- {o} = {p}; -). 
To let (r - object variable) be (s - object):
	(- {r} = {s}; -). 
To let (k - miscellaneous-value variable) be (l - miscellaneous-value):
	(- {k} = {l}; -). 
To let (k - table-name variable) be (l - table-name):
	(- {k} = {l}; -). 
To let (t - existing variable) be (u - value):
	(- {t} = {u}; -).
To change (p - property) to (w - value) documented ph_changev:
	(- Write{p}{-},{w}); -).
To change (gv - global variable) to (w - value) documented ph_change:
	(- {gv} = {w}; -).
To change (lv - existing variable) to (w - value):
	(- {lv} = {w}; -).
To increase (p - property) by (w - value):
	(- Write{p}{-},{p}+{w}); -).
To increase (gv - global variable) by (w - value):
	(- {gv} = {gv} + {w}; -).
To increase (lv - existing variable) by (w - value):
	(- {lv} = {lv} + {w}; -).
To decrease (p - property) by (w - value):
	(- Write{p}{-},{p}-{w}); -).
To decrease (gv - global variable) by (w - value):
	(- {gv} = {gv} - {w}; -).
To decrease (lv - existing variable) by (w - value):
	(- {lv} = {lv} - {w}; -).
To change (o - object) to (p - property) documented ph_changep:
	(- if (PermitAttribute(true, {o}, {p})) { if ({p}<I7_FBNA) give {o} {p}; else {o}.{p} = true; } -).
To change (o - object) to (w - value):
	(- WriteAccessProp({o},{*w},{w}); -).
To decide if (o - object) has a (p - property):
	(- ({o} provides {p}) -).
To decide if (o - object) has an (p - property):
	(- ({o} provides {p}) -).
To now (c - condition):
	(- {$c} -).


Section SR4/9 - Listing things in a given place

To list the contents of (O - an object),
	with newlines,
	indented,
	giving inventory information,
	as a sentence,
	including contents,
	including all contents, 
	tersely,
	giving brief inventory information,
	using the definite article,
	listing marked items only,
	prefacing with is/are
	and/or not listing concealed items documented ph_list:
	(- WriteListFrom(child({O}), {phrase options}); -).
[To do style the list,
	with newlines,
	indented,
	giving inventory information,
	as a sentence,
	including contents,
	including all contents, 
	tersely,
	giving brief inventory information,
	using the definite article,
	listing marked items only,
	prefacing with is/are
	and/or not listing concealed items:
	(- c_style = c_style | {phrase options}; -).
To do not style the list,
	with newlines,
	indented,
	giving inventory information,
	as a sentence,
	including contents,
	including all contents, 
	tersely,
	giving brief inventory information,
	using the definite article,
	listing marked items only,
	prefacing with is/are
	and/or not listing concealed items:
	(- c_style = c_style & (~ {phrase options}); -).]
To say contents of (O - an object):
	list the contents of O, as a sentence.
To say the contents of (O - an object):
	list the contents of O, as a sentence, using the definite article.
To say a list of (OS - object-specification):
	(- objectloop (say__c ofclass Object) if ({OS}) 
		give say__c i7listflag; else give say__c ~i7listflag;
		I7List(0); -).
To say list of (OS - object-specification):
	(- objectloop (say__c ofclass Object) if ({OS}) 
		give say__c i7listflag; else give say__c ~i7listflag;
		I7List(0); -).
To say the list of (OS - object-specification):
	(- objectloop (say__c ofclass Object) if ({OS}) 
		give say__c i7listflag; else give say__c ~i7listflag;
		I7List(DEFART_BIT); -).
To say The list of (OS - object-specification):
	(- objectloop (say__c ofclass Object) if ({OS}) 
		give say__c i7listflag; else give say__c ~i7listflag;
		I7List(-DEFART_BIT); -).
To say is/are list of (OS - object-specification):
	(- objectloop (say__c ofclass Object) if ({OS}) 
		give say__c i7listflag; else give say__c ~i7listflag;
		I7List(ISARE_BIT); -).
To say is/are the list of (OS - object-specification):
	(- objectloop (say__c ofclass Object) if ({OS}) 
		give say__c i7listflag; else give say__c ~i7listflag;
		I7List(DEFART_BIT+ISARE_BIT); -).
To group (OS - object-specification) together documented ph_group:
	(- objectloop (say__c provides list_together) if ({OS}) 
		say__c.list_together = {_LT}; -).
To group (OS - object-specification) together giving articles:
	(- objectloop (say__c provides list_together) if ({OS}) 
		say__c.list_together = {_LG}; -).
To group (OS - object-specification) together as (T - text):
	(- objectloop (say__c provides list_together) if ({OS}) 
		say__c.list_together = {T}; -).
To omit contents in listing documented ph_omit:
	(- c_style = c_style &~ (RECURSE_BIT+FULLINV_BIT+PARTINV_BIT); -).
To place (O - an object) in scope, but not its contents documented ph_scope:
	(- I7_PlaceInScope({O}, {phrase options}); -).


Section SR4/9a - The player's command

To decide if (S - a snippet) matches (T - a topic) documented act_reading:
	(- (wn=1,{T}({S}/100,{S}%100)~=GPR_FAIL) -).
To decide if (S - a snippet) does not match (T - a topic) documented act_reading:
	(- (wn=1,{T}({S}/100,{S}%100)==GPR_FAIL) -).
To decide if (S - a snippet) includes (T - a topic):
	(- (I7_match_snippet=I7_Match({T},{S})) -).
To decide if (S - a snippet) does not include (T - a topic):
	(- (I7_Match({T},{S})==0) -).
To replace (S - a snippet) with (T - text):
	(- SpliceSnippet({S}, {T}); -).
To cut (S - a snippet):
	(- SpliceSnippet({S}, 0); -).
To reject the player's command:
	(- RulebookFails(); rtrue; -).
To decide whether player consents documented ph_consents: 
		(- YesOrNo() -)


Section SR4/10 - Loops and conditionals

To if (c - condition) then (ph - phrase) documented ph_if:
	(- if {c} {ph} -).
To if (c - condition) , (ph - phrase):
	(- if {c} {ph} -).
To otherwise (ph - phrase) documented ph_otherwise:
	(- else {ph} -).
To if (c - condition) begin *:
	(- if {c}  -).
To while (c - condition) repeatedly (ph - phrase) documented ph_while:
	(- while {c} {ph} -).
To while (c - condition) , (ph - phrase):
	(- while {c} {ph} -).
To while (c - condition) begin *:
	(- while {c}  -).
To repeat with (loopvar - number variable)
	running from (v - number) to (w - number) begin * documented ph_repeat:
		(- for ({loopvar}={v}: {loopvar}<={w}: {loopvar}++)  -).
To repeat with (loopvar - object variable)
	running through (OS - object-specification-unsub) begin * +1 documented ph_runthrough:
		(- for ({loopvar}={OS}, {loopvar+}={loopvar}, {loopvar+}={\OS}: {loopvar}: {loopvar}={loopvar+}, {loopvar+}={\OS})  -).
To issue the error (message - string-of-text):
	(- print ">--> ", (string) {message}, "^^"; rtrue; -).
To stop:
	(- return; -) - void.
To yes documented ph_yes:
	(- rtrue; -) - condition.
To no:
	(- rfalse; -) - condition.
To decide on (something - returned) documented ph_result:
	(- return {something}; -) - value.
To decide yes:
	(- rtrue; -) - condition.
To decide no:
	(- rfalse; -) - condition.
To decide whether using the (UO - use-option):
	(- (I7ReadUseOption({UO})) -).


Section SR4/11 - Accessibility and persuasion

To decide whether (o - object) is inaccessible, saying if not:
	(- (ObjectIsUntouchable({o}, ~~({saying if not}))) -).
To allow access documented ph_allow:
	(- RulebookSucceeds(); rtrue; -).
To deny access:
	(- RulebookFails(); rtrue; -).
To there is sufficient light documented visibility:
	(- RulebookFails(); rtrue; -).
To there is insufficient light documented visibility:
	(- RulebookSucceeds(); rtrue; -).
To persuasion succeeds:
	(- RulebookSucceeds(); rtrue; -).
To persuasion fails:
	(- RulebookFails(); rtrue; -).


Section SR4/13 - Fonts and visual effects

To say bold type documented ph_types:
	(- style bold; -).
To say italic type:
	(- style underline; -).
To say roman type:
	(- style roman; -).
To say fixed letter spacing:
	(- font off; -).
To say variable letter spacing:
	(- font on; -).
To display the boxed quotation (Q - boxed-quotation) documented ph_boxed:
	(- I7_box = {Q}; -).


Section SR4/14 - Following rules

To follow (RL - a rule) documented ph_follow:
	(- FollowRulebook({RL}); -).
To consider (RL - a rule) documented ph_consider:
	(- ProcessRulebook({RL}); -).
To abide by (RL - a rule):
	(- if (ProcessRulebook({RL})) rtrue; -).
To follow (RL - a rule) for (O - object):
	(- FollowRulebook({RL}, {O}, true); -).
To consider (RL - a rule) for (O - object):
	(- ProcessRulebook({RL}, {O}, true); -).
To abide by (RL - a rule) for (O - object):
	(- if (ProcessRulebook({RL}, {O}, true)) rtrue; -).


Section SR4/15 - Success and failure of rules

To make no decision: (- rfalse; -).
To rule succeeds documented ph_succeeds:
	(- RulebookSucceeds(); rtrue; -).
To rule fails:
	(- RulebookFails(); rtrue; -).
To rule succeeds with result (O - a miscellaneous-value):
	(- RulebookSucceeds(true,{O}); rtrue; -).
To rule fails with result (O - a miscellaneous-value):
	(- RulebookFails(true,{O}); rtrue; -).
To decide if rule succeeded:
	(- (rulechange_stack-->rulechange_sp == RS_SUCCEEDS) -).
To decide if rule succeeded with result (O - miscellaneous-value):
	(- ((rulechange_stack-->rulechange_sp == RS_SUCCEEDS)
		&& (rulechange_stack-->(rulechange_sp+1) == true)
		&& (rulechange_stack-->(rulechange_sp+2) == {O})) -).
To decide if rule failed:
	(- (rulechange_stack-->rulechange_sp == RS_FAILS) -).
To decide if rule failed with result (O - miscellaneous-value):
	(- ((rulechange_stack-->rulechange_sp == RS_FAILS)
		&& (rulechange_stack-->(rulechange_sp+1) == true)
		&& (rulechange_stack-->(rulechange_sp+2) == {O})) -).
To decide which miscellaneous-value is the result of the rule:
	(- (ResultOfRule()) -).

Section SR4/16 - Procedural manipulation of rules

To ignore (RL - a rule) documented ph_ignore:
	(- SuppressRule({RL}); -).
To reinstate (RL - a rule):
	(- ReinstateRule({RL}); -).
To reject the result of (RL - a rule):
	(- DonotuseRule({RL}); -).
To accept the result of (RL - a rule):
	(- DonotuseRule({RL}); -).
To substitute (RL1 - a rule) for (RL2 - a rule):
	(- SubstituteRule({RL1},{RL2}); -).
To restore the original (RL1 - a rule):
	(- SubstituteRule({RL1},{RL1}); -).
To move (RL1 - a rule) to before (RL2 - a rule):
	(- MoveRuleBefore({RL1},{RL2}); -).
To move (RL1 - a rule) to after (RL2 - a rule):
	(- MoveRuleAfter({RL1},{RL2}); -).


Section SR4/17 - Unindexed

To abide by I6 GamePreRoutine:
	(- if (GamePreRoutine()~=0) rtrue; -).
To abide by I6 orders property:
	(- if (RunRoutines(player,orders)~=0) rtrue; -).
To abide by I6 location before:
	(- if (location~=0 && RunRoutines(location,before)~=0) rtrue; -).
To abide by I6 react_before property:
	(- scope_reason=REACT_BEFORE_REASON; parser_one=0;SearchScope(ScopeCeiling(player),player,0); scope_reason=PARSING_REASON; if (parser_one~=0) rtrue; -).
To abide by I6 object before:
	(- if (inp1>1 && RunRoutines(inp1,before)~=0) rtrue; -).

To abide by I6 GamePostRoutine:
	(- if (GamePostRoutine()~=0) rtrue; -).
To abide by I6 location after:
	(- if (location~=0 && RunRoutines(location,after)~=0) rtrue; -).
To abide by I6 react_after property:
	(- scope_reason=REACT_AFTER_REASON; parser_one=0;SearchScope(ScopeCeiling(player),player,0); scope_reason=PARSING_REASON; if (parser_one~=0) rtrue; -).
To abide by I6 object after:
	(- if (inp1>1 && RunRoutines(inp1,after)~=0) rtrue; -).

To run scene change machinery:
	(- I7_SceneChange(); -).

To cause the action to take place:
	(- _I6_ActionPrimitive(); rtrue; -).

To cause the description to take place:
	(- I6_PSN__(parameter_object); -).
To cause the listing to take place:
	(- I7_WLF(child(parameter_object), 0); -).

To dump Z stack backtrace: (- @"EXT:132"; -).

The say-parameter is an object that varies.

To decide whether the parser error is didn't understand:
	(- (etype == STUCK_PE) -).
To decide whether the parser error is only understood as far as:
	(- (etype == UPTO_PE) -).
To decide whether the parser error is didn't understand that number:
	(- (etype == NUMBER_PE) -).
To decide whether the parser error is can't see any such thing:
	(- (etype == CANTSEE_PE) -).
To decide whether the parser error is said too little:
	(- (etype == TOOLIT_PE) -).
To decide whether the parser error is aren't holding that:
	(- (etype == NOTHELD_PE) -).
To decide whether the parser error is can't use multiple objects:
	(- (etype == MULTI_PE) -).
To decide whether the parser error is can only use multiple objects:
	(- (etype == MMULTI_PE) -).
To decide whether the parser error is not sure what it refers to:
	(- (etype == VAGUE_PE) -).
To decide whether the parser error is excepted something not included:
	(- (etype == EXCEPT_PE) -).
To decide whether the parser error is can only do that to something animate:
	(- (etype == ANIMA_PE) -).
To decide whether the parser error is not a verb I recognise:
	(- (etype == VERB_PE) -).
To decide whether the parser error is not something you need to refer to:
	(- (etype == SCENERY_PE) -).
To decide whether the parser error is can't see it at the moment:
	(- (etype == ITGONE_PE) -).
To decide whether the parser error is didn't understand the way that finished:
	(- (etype == JUNKAFTER_PE) -).
To decide whether the parser error is not enough of those available:
	(- (etype == TOOFEW_PE) -).
To decide whether the parser error is nothing to do:
	(- (etype == NOTHING_PE) -).
To decide whether the parser error is I beg your pardon:
	(- (etype == BLANKLINE_PE) -).

Part SR5 - Bibliographic data - unindexed

The story title, the story author, the story headline, the story genre
and the story description are text variables.
The release number is a number variable. The story creation year is a number
variable.


The Standard Rules end here.

---- DOCUMENTATION ----

Unlike other extensions, the Standard Rules are compulsorily included
with every project. They define the phrases, kinds and relations which
are basic to Inform, and which are described throughout the documentation.
